跟隨筆者的旅程,並在 Kubernetes上,以 Selkies-Project 打造 WebRTC 低延遲串流的 NVIDIA IsaacSim or IsaacLab 沙盒環境。最近需要架設遠端統,以便開發。如果能幫助到任何有類似需求的人,抑或是能夠遇到有經驗的人,指出筆者的設計缺陷或給予建議,那就再好不過了,共勉之!
為什麼要在 K8s 上跑機器人模擬?
機器人模擬(Isaac Sim/Isaac Lab)需要高效 GPU、穩定的即時串流,以及可重現、可擴張的環境。把它放上 Kubernetes 的好處:
nvidia.com/gpu
調度 GPU,避免手動分配、互搶。本系列將從零開始,將一套可重現的「機器人沙盒平臺」搭建起來:使用者進到入口頁一鍵開啟 IsaacSim / IsaacLab Session → 透過瀏覽器操控與觀察 → 可記錄資料、匯出成果、回收資源。
讀者對象與前置知識
參考環境
30 天學習地圖
以下內容隨著系統規劃,可能會有更動
Week 1|地基:K8s、GPU、網路與安全
Week 2|Selkies × WebRTC × TURN:把畫面推進瀏覽器
8. Selkies 架構與 WebRTC 基礎:ICE / STUN / TURN / Codec 位元率與延遲
9. 部署 coturn + TURN-REST;webrtc-internals 驗證連通性
10. Helm 部署 Selkies(先跑一個 gl 樣板 App 驗證 GPU/串流)
11. Sidecar 模式:把 Selkies 掛到目標 App旁
12. 影像編碼調校:H.264 / VP9 / AV1、NVENC、解析度與 FPS 的平衡
13. Ingress 與 TURN 的拓樸擺位:公網/私網/多 NAT 的布署方式
Week 3|Isaac Sim/Isaac Lab 的容器化與可重現性
15. Isaac Sim(Headless/Streaming)容器化:映像、資料卷、環境變數
16. Isaac Lab 容器化:RL/IL 任務、Python 相依、CUDA/cuDNN 驗證
17. 把 Isaac + Selkies 放進同一個 Pod:範本 Chart 與 values.yaml
18. 觀測:DCGM Exporter + Prometheus + Grafana(GPU 使用率、溫度、功耗)
19. Logging:Loki + Promtail,集中收集 Isaac 與 Selkies 日誌
20. CI/CD 與 GitOps(規劃中):從推程式到自動佈署
Week 4|可擴張、多租戶、最佳化與故障排除
21. 多租戶最佳實務:Namespace 隔離、Quota、NetworkPolicy、Ingress Auth(OAuth2)
22. 調度與資源:nvidia.com/gpu
、Time-Slicing、併排/獨占策略
23. 性能測試:延遲/抖動/FPS 與位元率;網路與 GPU 編碼瓶頸診斷
24. 進階網路:MetalLB(L2/BGP)與 Gateway API;在實體交換器上的考量
25. 遠端穿越:Cloudflare Tunnel/Tailscale 與自建 TURN 的取捨
26. 場景與資產管理:快取、版本化與資料集掛載
27. 穩定性與 SLO:健康狀態探測、PodDisruptionBudget、重啟策略
28. 常見故障排除:ICE 失敗、黑畫面、No GPU Device、Pod CrashLoopBackOff
29. 整合入口:建立「機器人沙盒目錄」頁,讓使用者一鍵開局
30. 最終回:成品展示 與 未來路線(多站點、混合雲、邊緣節點)
目標架構(概念圖)
[ 使用者瀏覽器 ]
│ HTTPS (TLS)
▼
[ Ingress / Gateway ]
│
▼
[ Selkies Service ] ──→ [ coturn / TURN-REST ] ──→ 公網/內網節點連通
│ ▲
│ WebRTC(ICE/DTLS/SRTP) │ REST Auth
▼ │
[ Pod: isaac-sandbox ]
├─ Container A: Isaac Sim / Isaac Lab(Headless/Streaming)
└─ Container B: Selkies(GStreamer 編解碼+Signaling)
│
▼
[ GPU Node with NVIDIA GPU Operator ]
參考與延伸閱讀(官方文件)
Selkies Project(官方站與 GitHub)
IsaacSim說明
IsaacLab說明
Kubernetes 上的 NVIDIA GPU Operator
最後までお読みいただき、ありがとうございます。